home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / src / stefanb_src.lha / WBStart / test / wbsparams / wbsparams.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-30  |  3.2 KB  |  114 lines

  1. /* Compile with:
  2.  
  3.   dcc -3.1 -mRR -ms -mi -o wbsparams wbsparams.c -ldebug -lamiga31s
  4.  
  5. */
  6. #include <dos/dosextens.h>
  7. #include <workbench/startup.h>
  8. #include <clib/dos_protos.h>
  9. #include <clib/icon_protos.h>
  10. #include <pragmas/dos_pragmas.h>
  11. #include <pragmas/icon_pragmas.h>
  12. #include <stdlib.h>
  13.  
  14. extern struct Library *DOSBase, *IconBase;
  15.  
  16. void kprintf(const char *, ...);
  17.  
  18. char buf[1000];
  19.  
  20. int main(int argc, char **argv)
  21. {
  22.  return(0);
  23. }
  24.  
  25. int wbmain(struct WBStartup *wbs)
  26. {
  27.  struct Process *proc = (struct Process *) ((ULONG) wbs->sm_Process -
  28.                                                      sizeof(struct Task));
  29.  struct WBArg   *wa;
  30.  int             i;
  31.  
  32.  /* Print process parameters */
  33.  kprintf("Name       : %s (0x%08lx)\n"
  34.          "SegList    : 0x%08lx\n"
  35.          "Stack Size : %ld\n"
  36.          "GlobVec    : 0x%08lx\n"
  37.          "TaskNum    : %ld\n"
  38.          "ConsoleTask: 0x%08lx\n"
  39.          "FSTask     : 0x%08lx\n"
  40.          "CLI        : 0x%08lx\n"
  41.          "ReturnAddr : 0x%08lx\n"
  42.          "PktWait    : 0x%08lx\n"
  43.          "WindowPtr  : 0x%08lx\n"
  44.          "Flags      : 0x%08lx\n"
  45.          "ExitCode   : 0x%08lx\n"
  46.          "ExitData   : 0x%08lx\n"
  47.          "Arguments  : 0x%08lx\n"
  48.          "ShellPriv  : 0x%08lx\n",
  49.          proc->pr_Task.tc_Node.ln_Name, proc->pr_Task.tc_Node.ln_Name,
  50.          proc->pr_SegList, proc->pr_StackSize, proc->pr_GlobVec,
  51.          proc->pr_TaskNum, proc->pr_ConsoleTask, proc->pr_FileSystemTask,
  52.          proc->pr_CLI, proc->pr_ReturnAddr, proc->pr_PktWait,
  53.          proc->pr_WindowPtr, proc->pr_Flags, proc->pr_ExitCode,
  54.          proc->pr_ExitData, proc->pr_Arguments, proc->pr_ShellPrivate);
  55.  NameFromLock(proc->pr_CurrentDir, buf, 1000);
  56.  kprintf("Current Dir: %s (0x%08lx)\n", buf, proc->pr_CurrentDir);
  57.  NameFromLock(proc->pr_HomeDir, buf, 1000);
  58.  kprintf("Home Dir   : %s (0x%08lx)\n", buf, proc->pr_HomeDir);
  59.  NameFromLock(proc->pr_CIS, buf, 1000);
  60.  kprintf("Input      : %s (0x%08lx)\n", buf, proc->pr_CIS);
  61.  NameFromLock(proc->pr_COS, buf, 1000);
  62.  kprintf("Ouput      : %s (0x%08lx)\n", buf, proc->pr_COS);
  63.  NameFromLock(proc->pr_CES, buf, 1000);
  64.  kprintf("Error      : %s (0x%08lx)\n", buf, proc->pr_CES);
  65.  
  66.  /* Print WBArgs */
  67.  kprintf("Number of arguments: %ld\n", wbs->sm_NumArgs);
  68.  
  69.  for (i = 0, wa = wbs->sm_ArgList; i < wbs->sm_NumArgs; i++, wa++) {
  70.   struct DiskObject *dobj;
  71.   BPTR               oldlock;
  72.  
  73.   oldlock = CurrentDir(wa->wa_Lock);
  74.   dobj = GetDiskObject(wa->wa_Name);
  75.   CurrentDir(oldlock);
  76.   NameFromLock(wa->wa_Lock, buf, 1000);
  77.   kprintf("DirLock: %s (0x%08lx), Name: %s (0x%08lx), Icon: %s\n",
  78.           buf, wa->wa_Lock, wa->wa_Name, wa->wa_Name,
  79.           dobj ? "OK" : "NOT FOUND!");
  80.   if (dobj) FreeDiskObject(dobj);
  81.  }
  82.  
  83.  /* Try to open program icon */
  84.  {
  85.   struct DiskObject *dobj;
  86.   BPTR               oldlock;
  87.  
  88.   oldlock = CurrentDir(wbs->sm_ArgList->wa_Lock);
  89.  
  90.   if (dobj = GetDiskObject(wbs->sm_ArgList->wa_Name))
  91.  
  92.     kprintf("Program icon found in wa_Lock: 0x%08lx\n", dobj);
  93.  
  94.   else {
  95.  
  96.    CurrentDir(proc->pr_HomeDir);
  97.  
  98.    if (dobj = GetDiskObject(wbs->sm_ArgList->wa_Name))
  99.  
  100.     kprintf("Program icon found in PROGDIR: 0x%08lx\n", dobj);
  101.  
  102.    else
  103.  
  104.     kprintf("Program icon NOT found!\n");
  105.   }
  106.  
  107.   if (dobj) FreeDiskObject(dobj);
  108.  
  109.   CurrentDir(oldlock);
  110.  }
  111.  
  112.  return(0);
  113. }
  114.